package org.example;

import redis.clients.jedis.Jedis;

public class RedisDataTypeBackup {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("127.0.0.1", 6379);
        jedis.select(0); // 选择要操作的数据库编号

        // 要备份和恢复的键
        String originalKey = "myKey";
        String backupKey = "backup_myKey";

        // 获取原始数据类型
        String dataType = jedis.type(originalKey);

        // 备份数据
        if (dataType.equals("string")) {
            // 如果是字符串类型，备份字符串数据
            String valueToBackup = jedis.get(originalKey);
            jedis.set(backupKey, valueToBackup); // 备份数据到另一个键
        } else if (dataType.equals("list")) {
            // 如果是列表类型，备份列表数据
            // 可以使用 lrange 命令获取列表范围，然后使用 rpush 命令将数据备份到另一个列表中
            // 示例：List<String> listToBackup = jedis.lrange(originalKey, 0, -1);
            // jedis.rpush(backupKey, listToBackup.toArray(new String[0]));
        }

        // 恢复数据
        String backupDataType = jedis.type(backupKey);
        if (backupDataType.equals("string")) {
            // 如果备份数据也是字符串类型，将备份的值恢复到原始键
            String valueToRestore = jedis.get(backupKey);
            jedis.set(originalKey, valueToRestore); // 恢复备份的值到原始键
        } else if (backupDataType.equals("list")) {
            // 如果备份数据是列表类型，根据实际情况恢复列表数据
            // 示例：List<String> listToRestore = jedis.lrange(backupKey, 0, -1);
            // jedis.rpush(originalKey, listToRestore.toArray(new String[0]));
        }

        jedis.close();
    }
}
